import torch
import torchaudio
from torchaudio.transforms import MelSpectrogram

# waveform 波形（channels 通道数,frames 帧数）
# sample_rate 采样率
waveform, sample_rate = torchaudio.load("test.wav")

# 特征提取配置
mel_transform = torchaudio.transforms.MelSpectrogram(
    sample_rate=16000,  # 输入音频采样率
    n_fft=400,  # FFT窗口大小
    hop_length=160,  # 帧移(默认win_length//2)
    n_mels=80,  # 梅尔滤波器的数量
)

# 音频的采样率，在训练时，需要统一
if sample_rate != 16000:
    resampler = torchaudio.transforms.Resample(sample_rate, 16000)
    # 强行更改波形的采样率
    waveform = resampler(waveform)

mel_spec = mel_transform(waveform)
# torch.Size([1, 80, 289])  80:Embedding_dims // 289:seq_len
print(mel_spec.shape)
